home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
86xx
/
8603.d64
/
kudiplo 64
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
8KB
|
279 lines
100 REM***********KUDIPLO**************
110 REM FUNKTION DISKUTIEREN + PLOTTEN
120 REM MIT C-64 UND PLOTTER VC-1520
130 REM
140 REM JUERGEN CURDT
150 REM KESSEMEIERWEG 5
160 REM 493 DETMOLD
170 REM
180 REM********************************
190 POKE53280,11:POKE53281,11:AF=11
200 :
210 REM PARAMETER UND VARIABLE LESEN
220 :
230 EIN=49152:OF=49410:AN=49234:CL=49182:FB=49203
240 F$="SIN(X)+ SIN(X*2)"
250 DEFFNF(X)=SIN(X)+ SIN(X*2)
260 DEFFNF1(X)=(FNF(X+1E-4)-FNF(X-1E-4))/2E-4
270 DEFFNF2(X)=(FNF1(X+1E-4)-FNF1(X-1E-4))/2E-4
280 XU=-4:XO= 4:YU=-4:YO= 4:OY= 0
290 XN= 280:YN= 0
300 XE=(XO-XU)/16:YE=(YO-YU)/16:XW=XU
310 PRINT"[147][144]"TAB(81)"FUNKTIONEN PLOTTEN UND DISKUTIEREN MIT"
320 PRINT" C 64 UND PRINTER-PLOTTER VC-1520 ODER BILDSCHIRMAUSGABE
330 [129]I[178]0[164]39:[153]"POS";:[130]:[153]
335 :
340 [143] EINGABE DER FUNKTION
345 :
350 [153][166]120)"ALS FUNKTION WIRD DARGESTELLT:"
360 X[178]5:Y[178]15:[141]2370:[153]"Y=";F$
370 [153][163]160):[139][194](49152)[170][194](49153)[178]62[167]400
380 [153][163]5)"EIN WENIG GEDULD BITTE !"
390 [141]5000:[158]CL
395 [147]"HC EPSON*",8,1
400 [153]"ONSTOPSOLL DIE FUNKTION VERAENDERT WERDEN ?":[153][163]57)"J/N"
410 [161]E$:[139]E$[178]"N"[167]590
420 [139]E$[179][177]"J"[167]410
430 [153]"LOADSTOP"[163]80)"BITTE DIE FUNKTION EINGEBEN ODER AENDERN"
440 [129]I[178]0[164]39:[153]"TAN";:[130]:[153]
450 [153]"WENN DIE FUNKTION IM DIVISOR DENCLOSEFAKTOR X ENTHAELT, SOLLTE DER GANZE ";
460 [153]"DIVISOR IN KLAMMERN GESETZT WERDEN.":[153]
470 [129]I[178]0[164]39:[153]"POS";:[130]:[153]
480 X[178]5:Y[178]16:[141]2370:[153]"Y= "F$;
490 [153][163]243)"EINGABE IN UEBLICHER BASIC-SYNTAX
500 X=7:GOSUB2370:INPUTF$
510 PRINT"[147]"TAB(240)TAB(250)"[144]MOMENT BITTE !"
520 PRINT"[151]240F$="CHR$(34)F$CHR$(34)"
530 [153]"250DEFFNF(X)="F$"
540 PRINT"280 XU="XU"[157]:XO="XO"[157]:YU="YU"[157]:YO="YO"[157]:OY="OY
550 PRINT"1390Y="F$":GOTO1410"
560 PRINT"2260Y="F$":GOTO2280"
570 PRINT"290 XN="XN"[157]:YN="YN:PRINT"SV="SV"[157]:BS="BS"[157]:AF="AF"[157]:GOTO220"
580 POKE631,19:FORI=632TO640:POKEI,13:NEXT:POKE198,9:END
590 PRINT"[147][144]"TAB(120)"DIE PARAMETER FUER DIE DARSTELLUNG:"
600 PRINTTAB(120)"UNTERSTER X-WERT: "XU
610 PRINTTAB(80)"[144]OBERSTER X-WERT: "XO
620 PRINTTAB(120)"[144]UNTERSTER Y-WERT: "YU
630 PRINTTAB(80)"[144]OBERSTER Y-WERT: "YO
640 PRINTTAB(120)"[144]SOLLEN DIE PARAMETER VERAENDERT WERDEN ?":PRINTTAB(17)"J/N"
650 GETE$:IFE$="N"THEN820
660 IFE$<>"J"THEN650
670 PRINT"";:SYSCL:BS=0:SV=0
680 X=16:Y=7:GOSUB2370:INPUTXU
690 X=16:Y=10:GOSUB2370:INPUTXO
700 XE=(XO-XU)/16:IFXE<=0THEN680
710 IFSGN(XU)=SGN(XO)THENXN=80:GOTO730
720 XN=ABS(XU)*25/XE+80
730 X=16:Y=14:GOSUB2370:INPUTYU
740 X=16:Y=17:GOSUB2370:INPUTYO
750 YE=(YO-YU)/16:IFYE=<0THEN730
760 REM ACHSENSCHNITTPUNKT BERECHNEN
770 IFSGN(YU)<>SGN(YO)THEN800
780 IFYO<=0THENYN=200:OY=ABS(YO*25/YE)+200:GOTO810
790 IFYU>=0THENYN=-200:OY=-200-YU*25/YE:GOTO810
800 YN=ABS(YU)*25/YE-200:OY=YN
810 GOTO590
815 :
820 REM HAUPTMENUE
825 :
830 PRINT"[147][144]";:FORI=0TO39:PRINT"[195]";:NEXT
840 PRINT" Y="F$:PRINT" IM BEREICH VON X="XU" BIS X="XO
850 PRINT" SKALENEINHEIT AUF DEM BILDSCHIRM:
860 [153]" X-ACHSE "XE[172]2,"Y-ACHSE "YE[172]2
870 [153]"STOP";:[129]I[178]0[164]39:[153]"LEN";:[130]
880 [153]"STOPDIE AUSGABE ERFOLGT AUF DEM ";
890 [139]AF[178]10[167][153]" PLOTTER WAIT":[137]910
900 [153]"BILDSCHIRM WAIT"
910 [153]"WSTOPECHSEL DES AUSGABEGERAETES WSTOP"
920 [129]I[178]0[164]39:[153]"LEN";:[130]
930 [153][163]51)"WELCHE AUFGABE ?
940 PRINTTAB(40)"Z[153]EICHNEN DER FUNKTION"TAB(38)"Z"
950 PRINTTAB(40)"K[153]URVENDISKUSSION AUSGEBEN"TAB(38)"K"
960 PRINTTAB(40)"P[153]ARAMETER AENDERN"TAB(38)"P"
970 PRINTTAB(40)"F[153]UNKTION AENDERN"TAB(38)"F"
980 PRINTTAB(40)"U[153]MSCHALTEN AUF GRAFIKBILDSCHIRM"TAB(38)"U"
990 PRINTTAB(40)"L[153]OESCHEN DES GRAFIKBILDSCHIRMS"TAB(38)"L"
1000 PRINTTAB(40)"H[153]ARDCOPY DES GRAFIKBILDSCHIRMS"TAB(38)"H"
1010 POKE198,0:SYS62255
1020 GETA$:IFA$<>"W"THEN1050
1030 IFAF<>11THENAF=11:GOTO820
1040 IFAF<>10THENAF=10:GOTO820
1050 IFA$<>"Z"THEN1080
1060 IFAF=10THEN1160
1070 SYSEIN+3:SYSFB,27:GOTO2020
1080 IFA$="F"THEN310
1090 IFA$="L"THENSYSCL:BS=0:GOTO1020
1100 IFA$="K"THENPRINT"[147]":GOSUB1480:GOTO820
1110 IFA$="U"THENSYSEIN+3:SYSFB,27:GOTO2320
1120 IFA$="H"THENSYSEIN+3:SYSFB,27:GOSUB2520:SYSOF:GOTO820
1130 IFA$<>"P"THEN1020
1140 PRINT"[147]";
1150 SYSCL:GOTO590
1155 :
1160 REM KREUZ PLOTTEN
1165 :
1170 OPEN1,6,1:OPEN2,6,2:OPEN3,6,3:OPEN10,6
1180 IFSVTHEN1330
1190 PRINT#3,0:PRINT#2,1
1200 PRINT#10:PRINT#1,"M";0;-440:PRINT#1,"M";0;-200:PRINT#10
1210 PRINT#1,"M";80;YN:FORI=0TO14STEP2
1220 PRINT#1,"I":PRINT#1,"R";0;4:PRINT#1,"J";0;-4
1230 PRINT#1,"R";-12;-14
1240 PRINT#10,INT((XE*I+XU)*100+.5)/100;
1250 PRINT#1,"M";80+I*25;YN:PRINT#1,"D";80+(I+2)*25;YN
1260 NEXT:PRINT#1,"M";75+I*25;YN-4:PRINT#10,">";
1270 PRINT#1,"M";XN;-200
1280 FORI=0TO14STEP2:PRINT#1,"I":PRINT#1,"R";4;0
1290 PRINT#1,"J";-4;0:PRINT#1,"R";-30;-4
1300 J=YU+INT(YE*100*I+.5)/100:IFJ<>0THENPRINT#10,J;
1310 PRINT#1,"M";XN;I*25-200:PRINT#1,"D";XN;(I+2)*25-200
1320 NEXT:PRINT#1,"M";XN-5;I*25-209:PRINT#3,1:PRINT#10,"^";
1325 :
1330 REM KURVE PLOTTEN
1335 :
1340 PRINT"[147][144]"TAB(250)"ETWAS GEDULD BITTE":PRINT#2,SV+3
1350 E$="M":XW=XU:IFXU=0THENXW=1E-6
1360 GOSUB2340
1370 J=(XO-XU)/400:FORI=0TO400
1380 X=J*I+XW
1390 Y=SIN(X)+ SIN(X*2):GOTO1410
1400 E$="M":GOTO1440
1410 Y=Y/YE*25+OY
1420 IFY>210ORY<-210THENE$="M":GOTO1440
1430 PRINT#1,E$;I+80;Y:E$="D"
1440 NEXT:GOSUB2350
1450 PRINT#1,"M";0;180-SV*20:PRINT#3,1:PRINT#10,"Y="F$;
1460 PRINT#1,"M";0;-250
1470 SV=SV+1:SYS62255:GOTO820
1480 REM KURVENDISKUSSION AUSGEBEN
1490 OPEN1,6,1:OPEN2,6,2:OPEN3,6,3:OPEN10,6:OPEN11,3
1500 IFAF=10THENPRINT#1,"M";0;180-SV*25:PRINT#3,0
1510 PRINT"[147]FUNKTION:":PRINTTAB(6)"Y="F$
1520 PRINT#AF
1530 PRINT#AF,"KURVENDISKUSSION VON X="XU"BIS X="XO:PRINT#AF
1540 PRINT#AF," NULLSTELLEN:"
1550 S1=XE/5:GOSUB2340
1560 A=FNF(XU-1E-4)
1570 FORX=XU+S1TOXOSTEPS1
1580 F=FNF(X)
1590 IFSGN(F)=SGN(A)THEN1720
1600 S=X-S1:Z=X:C=X-S1/2
1610 FC=FNF(C)
1620 FZ=FNF(Z)
1630 IFSGN(FC)<>SGN(FZ)THENS=C:GOTO1650
1640 Z=C
1650 C=(S+Z)/2
1660 IFABS(Z-S)>1E-6THEN1610
1670 FD=FNF1(C)
1680 IFABS(FC)<1E-4THEN1710
1690 IFABS(FD)>1E3THENPRINT#AF," SPRUNG BEI X="INT(C*1E4+.5)/1E4:GOTO1720
1700 GOTO1610
1710 PRINT#AF,TAB(6)INT(C*1E4+.5)/1E4;"/0","F'=";INT((FD)*1E4+.5)/1E4
1720 A=F
1730 NEXTX
1740 PRINT#AF," EXTREMA:":XW=XU
1750 A=FNF1(XW)
1760 FORX=XU+S1TOXOSTEPS1
1770 F=FNF1(X)
1780 IFSGN(F)=SGN(A)THEN1940
1790 S=X-S1:Z=X:C=X-S1/2
1800 FC=FNF1(C)
1810 FZ=FNF1(Z)
1820 IFSGN(FC)<>SGN(FZ)THENS=C:GOTO1840
1830 Z=C
1840 C=(S+Z)/2
1850 IFABS(Z-S)>1E-5THEN1800
1860 IFABS(FC)<1E-2THEN1880
1870 GOTO1950
1880 FD=FNF2(C)
1890 IFABS(FD)<1E-5THENPRINT#AF," SATTEL";:GOTO1920
1900 IFFD>0THENPRINT#AF," MIN.";:GOTO1920
1910 IFFD<0THENPRINT#AF," MAX.";
1920 FA=FNF(C):GOTO1930
1930 PRINT#AF,TAB(7)INT(C*1E4+.5)/1E4"/"INT(FA*1E4+.5)/1E4:GOTO1950
1940 IFABS(F)<1E-6THENC=X:GOTO1890
1950 A=F:NEXTX:GOSUB2350:POKE198,0:IFAF<>10THEN2000
1960 PRINT#1,"M";0;-275
1970 PRINTTAB(15)" FERTIG [146]"
1980 PRINT" IN DAS GLEICHE ACHSENKREUZ KANN KEINE"
1990 PRINT" WEITERE FUNKTION GEPLOTTET WERDEN !":WAIT198,1:GOTO820
2000 PRINTTAB(10)"ENDE DER AUSGABE[146]":SYS62255:WAIT198,1:RETURN
2010 :
2020 REM AUSGABE AUF BILDSCHIRM
2030 :
2040 REM Y-ACHSE-ZEICHNEN BS
2050 YK=(200-YN)*.5:IFYK<0THENYK=0
2060 IFYK>199THENYK=199
2070 IFBSTHEN2230
2080 BS=1:XK=(XN-80)*.5+60
2090 FORY=0TO199:SYSAN,XK,Y:NEXT
2100 UN=XK-2
2120 FORI=0TO7
2130 FORJ=UNTOUN+5:SYSAN,J,I*25:NEXTJ,I
2140 UN=YK-3:IFUN<0THENUN=0
2150 IFUN+5>199THENUN=194
2160 FORX=60TO259:SYSAN,X,YK:NEXT
2170 FORI=0TO8:FORJ=UNTOUN+5
2180 SYSAN,I*25+60,J
2190 NEXTJ,I
2200 :
2210 REM KURVE ZEICHNEN BS
2220 :
2230 GOSUB2340:XW=XU:IFXW=0THENXW=1E-6
2240 J=(XO-XU)/200:YK=100-OY/2
2250 FORI=1TO200:X=J*I+XW
2260 Y=SIN(X)+ SIN(X*2):GOTO2280
2270 GOTO2310
2280 Y=YK-Y/YE*12.5
2290 IFY<0ORY>199THEN2310
2300 SYSAN,I+60,Y
2310 NEXT:GOSUB2350
2320 POKE198,0:WAIT198,1:SYSOF:GOTO820
2330 REM UP FEHLERROUTINE EIN- AUS
2340 POKE768,23:POKE769,193:RETURN
2350 POKE768,139:POKE769,227:RETURN
2360 REM UP CURSOR POSITIONIEREN
2370 POKE211,X:POKE214,Y:SYS58732:RETURN
2380 :
2500 REM UP HARDCOPY DRUCKEN
2510 :
2520 SYS62255
2530 REM EINSPRUNG IN DAS MP HARDCOPY:
2540 SYS49440,8192,3
2550 SYS62255:SYSOF
2555 REM HARDCOPY BESCHRIFTEN:
2560 OPEN1,4:PRINT#1:PRINT#1
2565 PRINT#1," FUNKTION: Y="F$
2570 PRINT#1," SKALENEINHEIT AUF DER X-ACHSE:"XE*2
2580 PRINT#1," Y-ACHSE:"YE*2
2590 PRINT"[147]"TAB(240)" SOLL DIE KURVENDISKUSSION AUSGEDRUCKT
2600 [153][163]55)"WERDEN ?":[153][163]57)"J/N"
2610 [161]A$:[139]A$[178]"N"[167]2640
2620 [139]A$[179][177]"J"[167]2610
2630 AF[178]1:[141]1510:AF[178]11
2640 [158]62255:[142]
5000 :
5010 [143] ERSTELLEN DES MP. FEINGRAFIK
5020 :
5030 [129]I[178]49152[164]49429
5040 [135]X:[151]I,X:[130]
5050 [131]32,30,192,173,17,208,141,17,193,173,24,208,141,18,193,169,59,141,17
5060 [131]208,169,24,141,24,208,162,16,76,57,192,160,0,162,32,132,253,134,254
5070 [131]152,234,145,253,200,208,251,230,254,202,208,246,96,32,253,174,32,158
5080 [131]183,160,0,169,4,132,253,133,254,138,162,4,145,253,200,208,251,230,254
5090 [131]202,208,246,96,169,128,44,169,0,133,151,32,253,174,32,235,183,224,200
5100 [131]176,238,165,21,201,1,144,8,208,230,165,20,201,64,176,224,138,74,74
5110 [131]74,10,168,185,200,192,141,20,193,185,201,192,141,21,193,138,41,7,24
5120 [131]109,20,193,141,20,193,165,20,41,248,141,19,193,24,169,0,109,20,193
5130 [131]133,253,169,32,109,21,193,133,254,24,165,253,109,19,193,133,253,165
5140 [131]254,101,21,133,254,165,20,41,7,73,7,170,189,250,192,160,0,36,151,16
5150 [131]5,73,255,49,253,44,17,253,145,253,96,0,0,64,1,128,2,192,3,0,5,64,6
5160 [131]128,7,192,8,0,10,64,11,128,12,192,13,0,15,64,16,128,17,192,18,0,20
5170 [131]64,21,128,22,192,23,0,25,64,26,128,27,192,28,0,30,1,2,4,8,16,32,64
5180 [131]128,173,17,193,141,17,208,173,18,193,141,24,208,76,68,229,0,0,0,0,0
5190 [143] ERSTELLEN FEHLERROUTINE
5200 [129]I[178]49431[164]49439:[135]X:[151]I,X:[130]
5210 [131]138,48,3,76,59,169,76,116,164
5220 [142]
5230 [143] ENDE